A Brush object is used to paint the interior of graphics shapes, such as rectangles, ellipses, pies, polygons, and paths.
| Name | Description |
|---|---|
| GdipCloneBrush | Creates a new Brush object based on this brush. |
| GdipDeleteBrush | Deletes the specified Brush object. |
| GdipGetBrushType | Gets the type of this brush. |
| Name | Description |
|---|---|
| GdipCreateSolidFill | Creates a SolidBrush object based on a color. |
| GdipGetSolidFillColor | Gets the color of this SolidBrush object. |
| GdipSetSolidFillColor | Sets the color of this SolidBrush object. |
An HatchBrush defines a rectangular brush with a hatch style, a foreground color, and a background color. There are six hatch styles. The foreground color defines the color of the hatch lines; the background color defines the color over which the hatch lines are drawn.
| Name | Description |
|---|---|
| GdipCreateHatchBrush | Creates a HatchBrush object based on a hatch style, a foreground color, and a background color. |
| GdipGetHatchBackgroundColor | Gets the background color of this hatch brush. |
| GdipGetHatchForegroundColor | Gets the foreground color of this hatch brush. |
| GdipGetHatchStyle | Gets the hatch style of this hatch brush. |
Creates a new Brush object based on this brush. The cloned brush is a deep copy—you can modify it without affecting the original.
FUNCTION GdipCloneBrush (BYVAL brush AS GpBrush PTR, BYVAL cloneBrush AS GpBrush PTR PTR) AS GpStatus
| Parameter | Description |
|---|---|
| brush | [in] Pointer to the Brush object created with GdipCreateSolidFil, GdipCreateHatchBrush, GdipCloneBrush or similar function. |
| cloneBrush | [out] Pointer to a Brush object variable that recives a pointer to the new Brush object. |
The following example creates a SolidBrush object, clones it, and then uses the clone to fill a rectangle.
' ========================================================================================
SUB Example_CloneBrush (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Create an ARGB color
DIM pixelColor AS ARGB
pixelColor = GDIP_ARGB(255, 255, 0, 0)
' // Create a SolidBrush
DIM brush AS GpBrush PTR
hStatus = GdipCreateSolidFill(pixelColor, @brush)
' // Create a clone of the SolidBrush
DIM cloneBrush AS GpBrush PTR
hStatus = GdipCloneBrush(brush, @cloneBrush)
' // Use the clone brush to fill a rectagle
hStatus = GdipFillRectangleI(graphics, cloneBrush, 0, 0, 100, 100)
' // Cleanup
IF cloneBrush THEN GdipDeleteBrush(cloneBrush)
IF brush THEN GdipDeleteBrush(brush)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Deletes the specified Brush object.
FUNCTION GdipDeleteBrush (BYVAL brush AS GpBrush PTR) AS GpStatus
| Parameter | Description |
|---|---|
| brush | [in] Pointer to the Brush object created with GdipCreateSolidFil, GdipCreateHatchBrush, GdipCloneBrush or similar function. |
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Create a SolidBrush
DIM brush AS GpSolidFill PTR
hStatus = GdipCreateSolidFill(ARGB_BLUE, @brush)
' ...
' ...
' ...
' // Cleanup
IF brush THEN GdipDeleteBrush(brush)
IF graphics THEN GdipDeleteGraphics(graphics)
Gets the type of this brush.
FUNCTION GdipGetBrushType (BYVAL brush AS GpBrush PTR, BYVAL brushType AS GpBrushType PTR) AS GpStatus
| Parameter | Description |
|---|---|
| brush | [in] Pointer to the Brush object created with GdipCreateSolidFil, GdipCreateHatchBrush, GdipCloneBrush or similar function. |
| brushType | [out] Pointer to a GpBrushType variable that receives the type of this brush. The value returned is one of the elements of the BrushType enumeration. |
BrushType enumeration
| Constant | Value | Description |
|---|---|---|
| BrushTypeSolidColor | 0 | Indicates a brush of type SolidBrush. A solid brush paints a single, constant color that can be opaque or transparent. |
| BrushTypeHatchFill | 1 | Indicates a brush of type HatchBrush. A hatch brush paints a background and paints, over that ackground, a pattern of lines, dots, dashes, squares, crosshatch, or some variation of these. The hatch brush consists of two olors: one for the background and one for the pattern over the background. The color of the background is called the background olor, and the color of the pattern is called the foreground color. |
| BrushTypeTextureFill | 2 | Indicates a brush of type TextureBrush. A texture brush paints an image. The image or texture is either a portion of a specified image or a scaled version of a specified image. The type of image (metafile or nonmetafile) determines whether the texture is a ortion of the image or a scaled version of the image. |
| BrushTypePathGradient | 3 | Indicates a brush of type PathGradientBrush. A path gradient brush paints a color gradient in which the color changes from a enter point outward to a boundary that is defined by a closed curve or path. The color gradient has one color at the center point and ne or multiple colors at the boundary. |
| BrushTypeLinearGradient | 4 | Indicates a brush of type LinearGradientBrush. A linear gradient brush paints a color gradient in which the color changes evenly rom the starting boundary line of the linear gradient brush to the ending boundary line of the linear gradient brush. The boundary ines of a linear gradient brush are two parallel straight lines. The color gradient is perpendicular to the boundary lines of the inear gradient brush, changing gradually across the stroke from the starting boundary line to the ending boundary line. The color radient has one color at the starting boundary line and another color at the ending boundary line. |
The following example creates a SolidBrush, checks the type of the brush, and then, if the type is BrushTypeSolidColor, uses the brush to fill a rectangle.
' ========================================================================================
' The following example creates a SolidBrush, checks the type of the brush, and
' then, if the type is BrushTypeSolidColor, uses the brush to fill a rectangle.
' ========================================================================================
SUB Example_GetBrushType (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Create a SolidBrush
DIM brush AS GpBrush PTR
hStatus = GdipCreateSolidFill(ARGB_BLUE, @brush)
' // Get the type of solidBrush
DIM nType AS BrushType
hStatus = GdipGetBrushType(brush, @nType)
' // If the type of solidBrush is BrushTypeSolidColor, use it to fill a rectangle
IF nType = BrushTypeSolidColor THEN
hStatus = GdipFillRectangle(graphics, brush, 0, 0, 100, 100)
END IF
' // Cleanup
IF brush THEN GdipDeleteBrush(brush)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
FUNCTION GdipCreateSolidFill (BYVAL color AS ARGB, BYVAL brush AS GpSolidFill PTR PTR) AS GpStatus
| Parameter | Description |
|---|---|
| color | [in] ARGB color that specifies the initial color of the solid brush. |
| brush | [out] Pointer to a variable that receives a pointer to the new created SolidBrush object. |
' ========================================================================================
' The following example creates a SolidBrush, checks the type of the brush, and
' then, if the type is BrushTypeSolidColor, uses the brush to fill a rectangle.
' ========================================================================================
SUB Example_CreateSolidFill (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Create a SolidBrush
DIM brush AS GpBrush PTR
hStatus = GdipCreateSolidFill(ARGB_BLUE, @brush)
' // Get the type of solidBrush
DIM nType AS BrushType
hStatus = GdipGetBrushType(brush, @nType)
' // If the type of solidBrush is BrushTypeSolidColor, use it to fill a rectangle
IF nType = BrushTypeSolidColor THEN
hStatus = GdipFillRectangle(graphics, brush, 0, 0, 100, 100)
END IF
' // Cleanup
IF brush THEN GdipDeleteBrush(brush)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Gets the color of the SolidBrush object.
FUNCTION GdipGetSolidFillColor (BYVAL brush AS GpSolidFill PTR, BYVAL color AS ARGB PTR) AS GpStatus
| Parameter | Description |
|---|---|
| brush | [in] Pointer to the SolidBrush object. |
| color | [out] Pointer to a variable that receives the color of the solid brush. |
' ========================================================================================
' The following example creates a solid brush and uses it to fill a rectangle. The code
' gets the color of the solid brush and stores it. Then, the code creates a second solid
' brush using the stored color and paints a second rectangle with the second solid brush.
' ========================================================================================
SUB Example_GetSolidFillColor (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Create a SolidBrush
DIM solidBrush AS GpSolidFill PTR
hStatus = GdipCreateSolidFill(ARGB_BLUE, @solidBrush )
' // Fill a rectangle with the brush
GdipFillRectangle(graphics, solidBrush, 10, 10, 185, 100)
' // Get the color of the solid brush.
DIM colour AS ARGB
GdipGetSolidFillColor(solidBrush, @colour)
' // Create a second solid brush with that same color.
DIM solidBrush2 AS GpSolidFill PTR
GdipCreateSolidFill(colour, @solidBrush2)
' // Paint a second rectangle with the second solid brush.
GdipFillRectangle(graphics, solidBrush2, 205, 10, 185, 100)
' // Cleanup
IF solidBrush2 THEN GdipDeleteBrush(solidBrush2)
IF solidBrush THEN GdipDeleteBrush(solidBrush)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets the color of the SolidBrush object.
FUNCTION GdipSetSolidFillColor (BYVAL brush AS GpSolidFill PTR, BYVAL color AS ARGB) AS GpStatus
| Parameter | Description |
|---|---|
| brush | [in] Pointer to the SolidBrush object. |
| color | [in] ARGB color that specifies the color to be set in this solid brush. |
' ========================================================================================
' The following example creates a solid brush and uses it to fill a rectangle. The code
' uses GdipSetSolidFillColor to change the color of the solid brush and then paints a
' second rectangle the new color.
' ========================================================================================
SUB Example_SetSolidFillColor (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Create a SolidBrush
DIM solidBrush AS GpSolidFill PTR
hStatus = GdipCreateSolidFill(ARGB_BLUE, @solidBrush )
' // Fill a rectangle with the brush
GdipFillRectangle(graphics, solidBrush, 10, 10, 185, 100)
' // Change the color of the brush, and fill another rectangle.
GdipSetSolidFillColor(solidBrush, ARGB_RED)
GdipFillRectangle(graphics, solidBrush, 205, 10, 185, 100)
' // Cleanup
IF solidBrush THEN GdipDeleteBrush(solidBrush)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Creates a HatchBrush object based on a hatch style, a foreground color, and a background color.
FUNCTION GdipCreateHatchBrush (BYVAL hatchstyle AS GpHatchStyle PTR, BYVAL forecol AS ARGB, _
BYVAL backcol AS ARGB, BYVAL brush AS GpHatch) AS GpStatus
| Parameter | Description |
|---|---|
| hatchstyle | [in] Element of the HatchStyle enumeration that specifies the pattern of hatch lines that will be used. |
| forecol | [in] ARGB color to use for the hatch lines. |
| backcol | [in] ARGB color to use for the background. |
| brush | [in] Pointer to a variable that receives a pointer to the new created HatchBrush. |
' ========================================================================================
' The following example draws six of the available hatch styles.
' ========================================================================================
SUB Example_CreateHatchBrush (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Set and then draw the first hatch style.
DIM brush AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleHorizontal, ARGB_BLACK, ARGB_WHITE, @brush)
hStatus = GdipFillRectangle(graphics, brush, 20, 20, 115, 50)
' // Set and then draw the second hatch style.
DIM brush1 AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleVertical, ARGB_BLACK, ARGB_WHITE, @brush1)
hStatus = GdipFillRectangle(graphics, brush1, 145, 20, 115, 50)
' // Set and then draw the third hatch style.
DIM brush2 AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleForwardDiagonal, ARGB_BLACK, ARGB_WHITE, @brush2)
hStatus = GdipFillRectangle(graphics, brush2, 270, 20, 115, 50)
' // Set and then draw the fourth hatch style.
DIM brush3 AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleBackwardDiagonal, ARGB_BLACK, ARGB_WHITE, @brush3)
hStatus = GdipFillRectangle(graphics, brush3, 20, 100, 115, 50)
' // Set and then draw the fifth hatch style.
DIM brush4 AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleCross, ARGB_BLACK, ARGB_WHITE, @brush4)
hStatus = GdipFillRectangle(graphics, brush4, 145, 100, 115, 50)
' // Set and then draw the sixth hatch style.
DIM brush5 AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleDiagonalCross, ARGB_BLACK, ARGB_WHITE, @brush5)
hStatus = GdipFillRectangle(graphics, brush5, 270, 100, 115, 50)
' // Cleanup
IF brush THEN GdipDeleteBrush(brush)
IF brush1 THEN GdipDeleteBrush(brush1)
IF brush2 THEN GdipDeleteBrush(brush2)
IF brush3 THEN GdipDeleteBrush(brush3)
IF brush4 THEN GdipDeleteBrush(brush4)
IF brush5 THEN GdipDeleteBrush(brush5)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Gets the background color of the hatch brush.
FUNCTION GdipGetHatchStyle (BYVAL brush AS GpHatch PTR, BYVAL hatchstyle AS GpHatchStyle PTR) AS GpStatus
| Parameter | Description |
|---|---|
| brush | [in] Pointer to the HatchBrush object. |
| hatchstyle | [out] Pointer to a variable that receives the background color. The background color defines the color over which the hatch lines are drawn. |
' ========================================================================================
' The following example sets up three colors: black, turquoise, and current (initialized
' to black). A rectangle is painted by using turquoise as the background color and black
' as the foreground color. Then the GdipGetBackgroundColor function is used to get the
' current color of the brush (which at the time is turquoise). The address of the current
' color (initialized to black) is passed as the return point for the call to
' GdipGetBackgroundColor. When the rectangle is painted again, note that the background
' color is again turquoise (not black). This shows that the call to GdipGetBackgroundColor
' was successful.
' ========================================================================================
SUB Example_GetHatchBackgroundColor (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Set and then draw the first hatch style.
DIM brush AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleHorizontal, ARGB_BLACK, ARGB_Turquoise, @brush)
hStatus = GdipFillRectangle(graphics, brush, 20, 20, 170, 100)
' // Get the background color of the current brush.
DIM colorCurrent AS ARGB
hStatus = GdipGetHatchBackgroundColor(brush, @colorCurrent)
' // Draw the rectangle again using the current color.
DIM brush2 AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleDiagonalCross, ARGB_BLACK, colorCurrent, @brush2)
hStatus = GdipFillRectangle(graphics, brush2, 210, 20, 170, 100)
' // Cleanup
IF brush THEN GdipDeleteBrush(brush)
IF brush2 THEN GdipDeleteBrush(brush2)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Gets the foreground color of the hatch brush.
FUNCTION GdipGetHatchForegroundColor (BYVAL brush AS GpHatch PTR, BYVAL forecol AS ARGB PTR) AS GpStatus
| Parameter | Description |
|---|---|
| brush | [in] Pointer to the HatchBrush object. |
| forecol | [out] Pointer to a variable that receives the foreground color. The foreground color defines the color of the hatch lines. |
' ========================================================================================
' The following example sets up three colors: blue, turquoise, and current (initialized to
' black). A rectangle is painted by using turquoise as the background color and blue as the
' foreground color. Then the GdipGetBackgroundColor function is used to get the current
' color of the brush (which at the time is blue). The address of the current Color object
' (initialized to black) is passed as the return point for the call to GdipGetBackgroundColor.
' When the rectangle is painted again, notice that the foreground color is again blue (not
' black). This shows that the call to GdipGetForegroundColor was successful.
' ========================================================================================
SUB Example_GetHatchForegroundColor (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Set and then draw the first hatch style.
DIM brush AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleHorizontal, ARGB_BLUE, ARGB_Turquoise, @brush)
hStatus = GdipFillRectangle(graphics, brush, 20, 20, 170, 100)
' // Get the foreground color of the current brush.
DIM colorCurrent AS ARGB
hStatus = GdipGetHatchForegroundColor(brush, @colorCurrent)
' // Draw the rectangle again using the current color.
DIM brush2 AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleDiagonalCross, colorCurrent, ARGB_Turquoise, @brush2)
hStatus = GdipFillRectangle(graphics, brush2, 210, 20, 170, 100)
' // Cleanup
IF brush THEN GdipDeleteBrush(brush)
IF brush2 THEN GdipDeleteBrush(brush2)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Gets the hatch style of the hatch brush.
FUNCTION GdipGetHatchStyle (BYVAL brush AS GpHatch PTR, BYVAL hatchstyle AS GpHatchStyle PTR) AS GpStatus
| Parameter | Description |
|---|---|
| brush | [in] Pointer to the HatchBrush object. |
| hatchstyle | [out] Pointer to a variable that receives the hatch style, which is one of the elements of the HatchStyle enumeration. |
' ========================================================================================
' The following example sets up three colors: blue, turquoise, and current (initialized to
' black). A rectangle is painted by using turquoise as the background color and blue as the
' foreground color. Then the GdipGetBackgroundColor function is used to get the current
' color of the brush (which at the time is blue). The address of the current Color object
' (initialized to black) is passed as the return point for the call to GdipGetBackgroundColor.
' When the rectangle is painted again, notice that the foreground color is again blue (not
' black). This shows that the call to GdipGetForegroundColor was successful.
' ========================================================================================
SUB Example_GetHatchForegroundColor (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Set and then draw the first hatch style.
DIM brush AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleHorizontal, ARGB_BLUE, ARGB_Turquoise, @brush)
hStatus = GdipFillRectangle(graphics, brush, 20, 20, 170, 100)
' // Get the foreground color of the current brush.
DIM colorCurrent AS ARGB = HatchStyleDiagonalCross
hStatus = GdipGetHatchForegroundColor(brush, @colorCurrent)
' // Draw the rectangle again using the current color.
DIM brush2 AS GpHatch PTR
hStatus = GdipCreateHatchBrush(HatchStyleDiagonalCross, colorCurrent, ARGB_Turquoise, @brush2)
hStatus = GdipFillRectangle(graphics, brush2, 210, 20, 170, 100)
' // Cleanup
IF brush THEN GdipDeleteBrush(brush)
IF brush2 THEN GdipDeleteBrush(brush2)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================